package com.example.leetcode.prcatice;

/**
 * 符合下列属性的数组 arr 称为 山峰数组（山脉数组） ：
 *
 * arr.length >= 3
 * 存在 i（0 < i < arr.length - 1）使得：
 * arr[0] < arr[1] < ... arr[i-1] < arr[i]
 * arr[i] > arr[i+1] > ... > arr[arr.length - 1]
 * 给定由整数组成的山峰数组 arr ，返回任何满足 arr[0] < arr[1] < ... arr[i - 1] < arr[i] > arr[i + 1] > ... > arr[arr.length - 1] 的下标 i ，即山峰顶部。
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/B1IidL
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class OfferII_69 {

    public int peakIndexInMountainArray(int[] arr) {
        return erFen(arr,0,arr.length-1);
    }



    public int erFen(int[]arr,int low,int high){
        while (low <= high){
            int mid = low + (high -low) /2;
            if (mid == 0) low = mid+1;
            else if (mid == arr.length-1) high = mid -1;
            else if (arr[mid] >arr[mid-1] && arr[mid] > arr[mid+1]) return mid;
            else if (arr[mid] <arr[mid-1]) high = mid -1;
            else if (arr[mid]< arr[mid+1]) low = mid+1;
        }
        return -1;
    }
}


class TestOfferII_69{
    public static void main(String[] args) {
        int[] arr = {3,5,3,2,0};
        OfferII_69 o = new OfferII_69();
        System.out.println(o.peakIndexInMountainArray(arr));
    }
}